package com.jk.common.enums;

import lombok.Getter;

@Getter
public enum WitmoreErrorCode {
    // 通用错误码
    SUCCESS(200, "成功"),
    SYSTEM_ERROR(500, "系统错误"),
    PARAM_ERROR(501, "参数错误"),
    UNAUTHORIZED(401, "未登录"),


    // 业务错误码
    NO_DATA(1000, "暂无数据"),
    USR_NAME_PASSWORD_EMPTY(1001, "用户名密码不能为空"),
    USER_NOT_EXIST(1002, "用户不存在"),
    USER_PASSWORD_ERROR(1003, "密码错误"),
    USER_DISABLE_ERROR(1007,"账号被禁用" ),
    USERNAME_EXIST(1008, "用户名已存在"),
    ORG_NAME_EXIST(1009, "企业名称不能重复"),
    NO_AUTH(1010, "无权限"),
    REGION_NAME_EXIST(1011, "组织名称不能重复"),
    REGION_HAS_CHILD(1012, "有子节点不能删除"),
    TAG_NAME_EXIST(1013, "标签重复"),
    HAS_DEVICE(1014, "有关联设备不能删除"),
    POINT_NAME_EXIST(1015, "点位名称不能重复"),
    TIME_ERROR(1016, "时间异常"),
    RESOURCE_PROGRAM_RELATED(1017, "当前资源有节目绑定信息，无法删除"),
    DEVICE_SN_EXIST(1018, "设备码已存在"),
    POINT_NOT_LEAF(1019, "当前组织机构存在子节点不能挂载点位信息"),
    FOLDER_HAS_RESOURCE(1020, "文件夹下还有素材信息，不能删除"),
    FOLDER_NAME_EXIST(1021, "文件夹名称已存在"),
    REGION_HAS_POINT(1022, "当前组织机构存在点位信息，不能删除"),
    ;
    private final int code;
    private final String message;

    WitmoreErrorCode(int code, String message) {
        this.code = code;
        this.message = message;
    }

    /**
     * 根据错误码查找对应的枚举
     *
     * @param code 错误码
     * @return 对应的枚举
     */
    public static WitmoreErrorCode fromCode(int code) {
        for (WitmoreErrorCode errorCode : WitmoreErrorCode.values()) {
            if (errorCode.getCode() == code) {
                return errorCode;
            }
        }
        throw new IllegalArgumentException("未知的错误码: " + code);
    }
}
